ingenious.V12
Checklisten erstellen
Die Hauptmodule > Artikel > Artikel Stücklisten > Checklisten erstellen

Checklisten sind selbst programmierbare Abfragefenster, welche der Stückliste Informationen über die gewünschte Variation des Produktes mitteilt. Erstellt werden Checklisten über den Button Kap_4_2_6_1_Bild_1.jpg „Artikeleckdaten und Checklisten anzeigen und bearbeiten“ im Fensters „Artikeleckdaten […] Bearbeiten…“. Checklisten können mit Eingabefeldern, Auswahlfeldern (Listen) und Ja/Nein - Abfragefeldern, so genannten Checkboxen versehen werden. Um dies zu tun, müssen in der Spalte „Bezeichnung“ die Feldernamen, angeführt durch „?“ bzw. „??“ eingetragen werden. Die Anzahl der Fragezeichen entscheidet darüber, ob das Feld später als Multiposition in den Projektpositionen noch veränderbar ist (? veränderbar, ?? nicht veränderbar). Über die Feldernamen werden später die Werte an die Stückliste übergeben. In der Spalte „Wert“ müssen die Felder dann definiert und evtl. mit Inhalten versehen werden. Wenn Sie ein Auswahlfeld mit einer bestimmten Anzahl von festgelegten Auswahlmöglichkeiten haben wollen, schreiben Sie „feste liste=“ und anschließend die Auswahlmöglichkeiten, mit Komma voneinander getrennt. Wollen Sie ein Auswahlfeld, in dem auch der Benutzer eine eigene Auswahlmöglichkeit angeben kann, schreiben Sie anstelle von „feste liste=“ nur „liste=“. Bei Checkboxen schreiben Sie entweder „ja/nein“ oder „nein/ja“. Der Unterschied ist, dass bei „ja/nein“ bereits ein Häkchen im Feld gesetzt ist und bei „nein/ja“ nicht. Wenn Sie ein normales Eingabefeld definieren möchten, lassen Sie das Feld in der Spalte „Wert“ einfach leer.

Kap_4_2_6_1_Bild_2.jpg
Ansicht der Checkliste

Kap_4_2_6_1_Bild_3.jpg

 

Kommandos in der Checklistenprogrammierung

Das Implementieren von Befehlen in Checklisten ist möglich. Genauso wie vor Feldernamen mindestens ein „?“ steht, werden Befehle von einem „=“ eingeleitet.

„Visible

Mit dem Kommando „=Visible“ können Sie Felder der Checkliste ein- bzw. ausblenden.

„Set

Das Kommando „=Set“ kann den Wert eines beliebigen Feldes verändern. Das Feld „Elektromotor“ ist eine Checkbox, diese hat immer den Wert „0“ (kein Häkchen) oder „1“ (Häkchen gesetzt).

„OKend

Fehlermeldungen können mit dem Kommando „OKend“ erzeugt werden. Bei diesem Kommando wird die Bedingung erst geprüft, wenn die „OK“ Schaltfläche der Checkliste betätigt wird.

„Msg

Eine zweite Möglichkeit, eine Fehlermeldung zu erzeugen, ist das Kommando „Msg“. Dieses unterscheidet sich zu „OKend“ dadurch, dass bei jeder Veränderung, die der Benutzer an der Checkliste vornimmt, die Bedingung überprüft und bei Zutreffen dieser sofort eine Fehlermeldung ausgegeben wird.

„_Height

Die Höhe der Checkliste können Sie mit dem Kommando „_Height“ festlegen. Die Angabe erfolgt in Pixeln.

„_Width

Mit „_Width“ kann die Breite der Checkliste festgelegt werden.

„_Split

Mit dem Kommando „_Split“ können Sie die Breite der einzelnen Spalten festlegen. Allerdings werden hier 140 Pixel als 14, 220 Pixel als 22, u.s.w. angegeben. Beachten Sie aber, dass das Kommando „_Width“ bei der folgenden Abbildung wirkungslos bleibt, da das darunter stehende „_Split“ - Kommando einen wesentlich größeren Bereich definiert. Faustregel dabei ist: „Das letzte Kommando gilt!“

„Forecolor“ und „Backcolor

Feldern eine Farbe zuweisen, können Sie mit Hilfe der Schlüsselwörter „forecolor“ und „backcolor“.

„ParentSelector“

Syntax: FesteListe={Einzelelement;{Hauptelement;}}ParentSelector

Auswahl einer verknüpften Position.
Das Schlüsselwort ParentSelector wird mit einer Liste aller im Projekt befindlichen Stücklistenpositionen gefüllt. Nach Auswahl einer Position können deren Stücklistenvariablen im Aufmaß und in der Leistungsposition mit parent.Variable benutzt werden. In der Preisinfo wird anstelle der Positionsliste der Eintrag „Demo aus Typdaten“ angezeigt. Zu Testzwecken kann damit auf Variablen mit Präfix parent. in den Typdaten zugegriffen werden.

Beispiel:

Bezeichnung

Wert

?Elementtyp

FesteListe=Solo;Master;ParentSelector

 

 

 

Siehe folgendes Beispiel zu den Kommandos:

Kap_4_2_6_1_Bild_3.jpg

Kap_4_2_6_1_Bild_4.jpg
Ansicht des Aufmaßfensters

Wenn man jetzt in der Checkliste auf das Feld „Elektromotor“ klickt wird bei „Deckenhalter_Typ“ automatisch „Deko 03“ eingestellt. Das kann nur geändert werden wenn man das Häkchen wieder entfernt. Außerdem erscheint nun die Zeile „Achtung“, sobald „Deko 03“ ausgewählt wird. Sie können die Attribute per Maus oder per Tabulator-, Enter- und Pfeiltasten eingeben bzw. festlegen.

Kap_4_2_6_1_Bild_5.jpg
Ansicht des Aufmaßfensters

Um Ihnen den Start mit der Stücklistenprogrammierung ein wenig zu erleichtern, folgt nun eine kurze Übung dazu. In dieser sollen Sie eine Stückliste für eine Vertikaljalousie erstellen. In ihr sollen die Art und die Anzahl der Deckenhalterungen sowie die Zustellung für die entsprechende Jalousie berücksichtigt werden.

Hinweis: In den Programmeinstellungen in der Rubrik wenn ein Haken im Feld "Stücklisten Menge und Abmessungen bei den Aufmaßdaten eingeben" gesetzt ist, werden die Stücklisteneingabeaufforderung zur Menge und zu den Artikelmaßen automatisch im Aufmaß angezeigt. Sie können gegebenenfalls per Mausklick den Haken entfernen und die Funktion deaktivieren.

Kap_4_2_6_1_Bild_5a.jpg

 

Übung zum Erstellen von Stücklisten

Um eine Stückliste zu erstellen, benötigen Sie zuerst einen leeren Artikeldatensatz, welcher in diesem Beispiel als Quadratmeterpreis (qm-Preis) berechnet wird.

1.   Legen Sie also nun einen neuen Artikel mit dem Matchcode „D-Vertikaljalousie“ an.

2.   Klicken Sie auf die Schaltfläche Kap_4_2_6_1_Bild_6.jpg um eine Checkliste zu erstellen und fertigen Sie sie nach folgender Abbildung an.

Kap_4_2_6_1_Bild_7.jpg
Ansicht der fertigen Checkliste

3.   Speichern Sie die Checkliste und klicken Sie nun in der Detailansicht des erstellten Artikels auf die Schaltfläche Kap_4_2_6_1_Bild_8.jpg „Leistungspositionen bearbeiten und Stücklisten testen“, um jetzt mit der Programmierung der Stückliste beginnen zu können.

Es erscheint folgendes Fenster:

Kap_4_2_6_1_Bild_9.jpg

Hinweis: Die in der folgenden Stückliste verwendeten Artikel („Vertikaljalousie“, „Deco 01“, „Deco 02“, „Deco 03“, „Elektromotor“) sind extra für diese Übung erstellte Artikel. Sollten Sie in Ihrer Datenbank nicht vorhanden sein, müssen Sie diese zuerst erstellen (mit Preisen) bzw. diese in der Stückliste durch andere Artikel ersetzen. Dieses Handbuch beschreibt die Erstellung der Stückliste Zeile für Zeile, mit jeweils einer Abbildung. Achten Sie aber auf die Spaltenköpfe, da aus Platzgründen manche Spalten ohne Inhalt ausgeblendet wurden.

4.   Erzeugen Sie die Variable Grundpreis „GP“ und tragen Sie als Matchcode „Vertikaljalousie“ ein. Wenn sich dieser Artikel in Ihrer Datenbank befindet, vervollständigt ingenious.V12 die restlichen Zellen dieser Spalte automatisch. Um später auch einen entsprechenden Inhaltstext über die Stückliste zu bekommen, muss noch der Text „{jum.m} Vertikaljalousie(n)“ mit in die Spalte „Bezeichnung“ geschrieben werden. Dabei wird der Platzhalter „{jum.m}“ später durch die bestellte Anzahl von Jalousien ersetzt.

Kap_4_2_6_1_Bild_10.jpg

Das Feld Preisart wurde automatisch mit der Ziffer „3“ gefüllt. Der Grund dafür ist, dass der Artikel „Vertikaljalousie“ einen qm-Preis besitzt. Um die Übersichtlichkeit in der Stücklistenprogrammierung zu gewährleisten (Platz zu sparen) werden Preisarten und Preisverhältnisse (siehe: ) in umgewandelten Nummern dargestellt. Dabei gilt für die Preisarten folgendes Verhältnis: 0 = Stück, 1 = Stück-Staffel, 2 = x, 3 = x/y, 4 = x/y/z, 5 = x-Staffel, 6 = x/y-Staffelpreis.

5.   Als nächstes soll die Stückliste die Anzahl der benötigten Deckenhalterungen berechnen. Dabei sollen Sie berücksichtigen, was der Benutzer im Feld „Deckenhalter_Stk“ der Checkliste eingestellt hat. Weil dieses Feld eine „liste“ ist, kann der Benutzer zwischen dem Wert „auto“ (automatische Berechnung) und einem individuellen Wert wählen. Definieren Sie nun die Variable „DH_Stk“ und schreiben Sie folgende Formel in das Feld „Bezeichnung“: tab(jum.x)(100;150:2;3;(jum.x\50))

Eine Tab-Anweisung ist eine „Wenn-Dann“-Anweisung (in der Programmiersprache „C“ bzw. „C++“ ist sie mit einer „Case”-Anweisung vergleichbar). In diesem Beispiel bedeutet sie, wenn „x“ (also die Breite der Jalousie“) <=100 ist, soll „DH_Stk“ 2 sein. Wenn „x“ <=150 ist, soll „DH_Stk“ 3 sein. Und falls „x“ weder <=100 noch <=150 ist, soll ganzzahlig („\“) durch 50 geteilt werden (= „Default“-Wert in „Case“-Anweisung).

6.   Knüpfen Sie die Formel an folgende Bedingung: jum.Deckenhalter_Stk="auto". Damit legen Sie fest, dass diese Zeile nur ausgeführt wird, wenn im Feld „Deckenhalter_Stk“ der Wert „auto“ ausgewählt wurde.

Kap_4_2_6_1_Bild_11.jpg

7.   Die nächste Zeile soll den Fall, dass der Benutzer eine eigene Anzahl von Deckenhalterungen angibt, abfangen. Definieren Sie wieder die Variable „DH_Stk“ und tragen Sie die entgegengesetzte Bedingung der vorhergehenden Zeile ein: jum.Deckenhalter_Stk<>"auto". Mit dem Befehl „jum.Deckenhalter_Stk“ in der Zelle „Bezeichnung“, veranlassen Sie, dass die Variable „DH_Stk“ mit dem Wert gefüllt wird, die der Benutzer in das Checklistenfeld „Deckenhalter_Stk“ eingetragen hat.

Kap_4_2_6_1_Bild_12.jpg

8.   Die Anzahl haben Sie nun ermittelt. Jetzt müssen Sie der Stückliste noch die entsprechenden Typen mitteilen. Dazu tragen Sie in den nächsten drei Zeilen (in der Spalte „Matchcode“) jeweils einen der drei von Ingenious vorbereiteten Artikeln „Deco 01“, „Deco 02“ oder „Deco 03“ ein. In die Spalte „Pos“ schreiben Sie jeweils „DH_Typ“. Die Zeilen vervollständigen sich wieder automatisch, allerdings müssen Sie in der Spalte „Menge“ die von uns berechnete Variable „DH_Stk“ eintragen. Auch hier tragen Sie in der Spalte „Bezeichnung“ den entsprechenden Text „{DH_Stk} Deckenhalter vom Typ "Deco 01"“ als Beschreibung ein. Als Bedingung tragen sie ebenfalls die dem Artikel entsprechende Formel „jum.Deckenhalter_Typ="Deco 01", „… Deco 02“ oder „…Deco 03“ ein.

Kap_4_2_6_1_Bild_13.jpg

9.   Da in der Checkliste die Möglichkeit besteht, einen Elektromotor zu bestellen, tragen Sie in die Matchcodezelle der Zeile 7 „Elektromotor“ ein. Nachdem sich die Zeile wieder vervollständigt hat, müssen Sie nur noch die Bedingung „jum.Elektromotor=1“u eintragen. Auch dieser sollte wieder kurz („und Elektromotor“) in der Spalte „Bezeichnung“ beschrieben werden.

Kap_4_2_6_1_Bild_14.jpg

Bei Checkboxen, wie es das Feld „Elektromotor“ ist, steht der Wert „1“ für Ja (Häkchen). Und der Wert „0“ für Nein (kein Häkchen).

Um eine Position später in der Stückliste zu finden, haben Sie bisher den in der Datenbank existierenden Artikel in die Zeile Matchcode eingetragen. Mit den folgenden Positionen „Versandversicherung“, „Anlieferung“ und „Montage“ sollen Sie nun eine andere Möglichkeit dazu kennen lernen.

10.        In unserer Checkliste wird optional (per Checkbox) eine Versandversicherung angeboten. Um diese später in der Stückliste angezeigt zu bekommen, obwohl kein Artikel dafür existiert, müssen Sie in der Spalte „EK/VK“ eine Zahl zwischen 0 und 4 eintragen. Nach dieser Zahl richtet sich, mit welchem EK/VK der Artikel berechnet werden soll. Dabei gilt folgendes Verhältnis: 0 = EUR/EUR, 1 = EUR%, 2 = %/EUR, 3 = min-Artikel, 4 = LE-Artikel. Mit der Eingabe eines Preisverhältnisses weisen Sie ingenious.V12 an, diese Zeile später in der Stückliste mit anzuzeigen.

11.        Legen Sie weiterhin die Variable „VER_VER“ an und tragen Sie in die Spalte „Bezeichnung“ den Namen („inkl. Versandversicherung“) ein, der später in der Stückliste aufgeführt werden soll. Um für diese Position einen Preis berechnen zu lassen, fügen Sie die Formel „tab(jum.vk/jum.m)(2500;25000:3,5;15)“ in die Spalte „VK 1“ ein. Damit weisen Sie der Variable „VER_VER“ den Wert „3,5“ zu, wenn der Verkaufspreis (Achtung: „VK“ wird nur bis zur aktuellen Position in der Stückliste berechnet) pro Jalousie <=2.500 ist. Ist der „VK“ <=25.000, wird dem Kunden für die Versandversicherung 15,-€ pro Stück berechnet. Da es sehr unwahrscheinlich ist, dass eine Vertikaljalousie mehr als 25.000,-€ kosten wird, ist eine Fehlerbehandlung („VK“ >25000) nicht unbedingt erforderlich. Wer diesen Fall trotzdem einbeziehen will, kann mit der Formel (Veränderung Kursiv) „tab(jum.vk/jum.m)(2500;25000:3,5;15;((jum.vk/jum.m)*0,003))“ auf Nummer sicher gehen und 0,3 % der Versicherungssumme als Versicherungskosten veranschlagen. In der Zelle „Bedingung“ müssen Sie jetzt noch festlegen, dass diese Zeile nur ausgeführt wird, wenn sich der Benutzer für den Versand der Jalousie mit einer Versandversicherung entschieden hat. Tragen Sie dazu folgende verknüpfte Bedingung in die Zelle ein: (jum.Versandversicherung=1)und(jum.Zustellungsart="Versand")

Kap_4_2_6_1_Bild_15.jpg

12.        Klicken Sie in die neunte Zeile und definieren Sie die Variable „ANL_M“, diese steht für „Anlieferung Menge“. In dieser Zeile soll die Stückliste die Anzahl der Lieferungen berechnen, wenn eine Anlieferung maximal 25 Vertikaljalousien (inkl. Deckenhalter und Motoren) beinhalten kann. Dazu müssen Sie in die Zelle „Bezeichnung“ folgende umfangreiche Formel eingeben: tab(jum.m\25=jum.m/25)(-1;0:(jum.m\25);(jum.m\25+1)). Mit dieser Formel berechnen Sie zuerst, ob die Anzahl der Jalousien ganzzahlig durch 25 geteilt der Summe der Anzahl der Jalousien geteilt durch 25 entspricht. Wenn Ja („-1“), wenn Nein („0“), dann wird zu der 25 noch eine 1 addiert.

Kap_4_2_6_1_Bild_16.jpg

13.        Jetzt kann die Anlieferung in die Stückliste eingetragen werden. Geben Sie dazu in die Zelle „Pos“ der Zeile 10 den Variablennamen „ANL_P“ und in die Zelle „Bezeichnung“ „inkl. Anlieferung“ ein. Nun kann die zuvor berechnete Anzahl „ANL_M“/jum.m in die Spalte „Menge“ eingetragen werden. Für die Preisberechnung gemäß der Postleitzahl des Käufers wird mit der Formel tab(jum.PLZ)(3000;4000;5000:70;60;55) in der Zelle „VK 1“ der Preis berechnet. Als Bedingung für diese Zeile muss nun festgelegt werden, dass sie nur bei „Anlieferung“ zu berücksichtigen ist. Dazu tragen Sie jum.Zustellungsart="Anlieferung" in die Zelle ein. Vergessen Sie nicht auch die Zelle „EK/VK“ mit einer „0“ zu füllen.

Kap_4_2_6_1_Bild_17.jpg

14.        Als letztes wird noch die Berechnung der Montage in die Stückliste eingefügt. Erstellen Sie dazu die Variable „MON_P“ in Zeile 11 und tragen Sie in die Zelle „Bezeichnung“ „und Montage“ ein. Fügen Sie weiterhin in die Zelle „Menge“ eine „1“ ein, wechseln Sie in die Zelle „VK 1“ und tragen Sie hier folgende Formel für die Preisberechnung ein: tab(jum.m)(6;16;1000:40;35;30)

Zum Abschluss muss noch die Bedingung: (jum.Montage=1)und(jum.Zustellungsart= "Anlieferung") eingetragen werden.

Kap_4_2_6_1_Bild_18.jpg

15.        Füllen Sie nun noch die leeren Zellen der Spalten „Preisart“, „VK 2“ und „EK“ mit jeweils einer „0“ auf.

Ihre Stückliste sieht nun wie folgt aus:

Kap_4_2_6_1_Bild_19.jpg

Wenn Sie die Stückliste der Abbildung genau nachempfunden haben, ist sie nun fertig und voll funktionsfähig. Probieren Sie dies gleich aus, indem Sie auf die Schaltfläche Kap_4_2_6_1_Bild_20.jpg klicken, um in das Fenster „Produkt Preisinfo“ zu gelangen. Hier können Sie mit Hilfe der Schaltfläche Kap_4_2_6_1_Bild_21.jpg Ihre Checkliste aufrufen. Testen Sie mehrere verschiedene Einstellungen und achten Sie dabei auf die (Preis-)Änderungen.

Kap_4_2_6_1_Bild_22.jpg
Beispielansicht

Dynamische Eingabeelemente

 Bei der Erstellung von Checklisten können auch dynamische Eingabeelemente verwendet werden, welche per Script {Exec_Script(Scriptname)} oder per Jumbo Befehl {tab(...   )} gesteuert werden. Mit dem Jumbo Befehl wird direkt auf die Stücklistensprache zurückgegriffen und anhand von Exec_Script kann auf die Datenbanksprache zurückgegriffen werden. Das bedeutet mit Hilfe von Exec_Script können sämtliche Datenbankabfragen in eine Stückliste eingebunden werden. Zum besseren Verständnis folgen dazu zwei Übungen.

 

Übung zum Jumbo Befehl {tab(…)}

1.   Erstellen Sie einen Testartikel und öffnen Sie die Checkliste. Legen Sie den Feldnamen "??Test" mit der Checkbox "Ja/Nein" an (siehe auch: ). Im Anschluss legen Sie noch die Feldbezeichnung "?dynamisches Element" mit einer festen Liste "feste Liste={tab(jum.Test)(0;1:"1;2;3";"4;5;6")} an.

Kap_4_2_6_1_Bild_23.jpg

Mit Hilfe des Jumbo Befehls erfolgt nun die Abfrage, ob die Checkbox angehakt ist oder nicht. Wenn sie einen Haken hat, soll eine Liste mit den Zahlen 4, 5 und 6 ausgegeben werden und wenn nicht die 1, 2 und 3.

2.   Speichern Sie die Einstellungen und sehen Sie sich über die Button Kap_4_2_6_1_Bild_20.jpg und Kap_4_2_6_1_Bild_21.jpg Ihre Checkliste an.

Kap_4_2_6_1_Bild_24.jpg

3.   Entfernen Sie nun den Haken per Mausklick auf die Checkbox und Sie sehen die Veränderung in der Liste.

Kap_4_2_6_1_Bild_25.jpg 

 

Übung zum Script {Exec_Script("Scriptname")}

1.   Öffnen Sie erneut die Artikeleckdaten des Testartikels, ändern Sie die feste Liste in "feste Liste={Exec_Script("Dynamisch")}“ und speichern Sie diese Einstellung.

Kap_4_2_6_1_Bild_26.jpg

2.   Öffnen Sie nun die Freie Datenmanipulation und legen Sie ein neues Script "Dynamisch" mit folgendem Inhalt an (siehe: ).

Kap_4_2_6_1_Bild_27.jpg

Dieses Script fragt die Artikelnummer des Artikels ab. Ist die Artikelnummer größer als 10000 werden die Zahlen 1, 2 und 3 ausgegeben. Wenn sie kleiner ist die Zahlen 4, 5 und 6.

3.   Wechseln Sie wieder in den Testartikel und ändern Sie per Doppelklick die Artikelnummer in "11111". Öffnen Sie nun die Checkliste.

Kap_4_2_6_1_Bild_28.jpg

4.   Ändern Sie die Artikelnummer in "9999" und sehen Sie sich die veränderte Checkliste an.

Kap_4_2_6_1_Bild_29.jpg

 

Visible- und Set-Befehle bei der Multipositionseingabe

Visible-Befehle, Set-Befehle sowie dynamische Eingabefelder werden auch bei Multipositionen unterstützt (siehe dazu: . Das heißt, Sie können auch bei Mutipositionen, jede Position individuell anpassen.

Kap_4_2_6_1_Bild_30.jpg
Beispielansicht einer Checkliste

Wird für das Feld "Gelenkarm" die Option "Seilarm" gewählt, wird das Feld "Antrieb" mit seinen dazugehörigen Optionen eingeblendet. Ansonsten wird es ausgeblendet. Wird für das Feld "Gelenkarm" jedoch die Option "Kettenarm" gewählt, wird für das Feld "Befestigungskonsolen" automatisch die Option "Deckenkonsole " gesetzt.

Kap_4_2_6_1_Bild_31.jpg
Ansicht bei der Option "Seilarm"

Kap_4_2_6_1_Bild_32.jpg
Ansicht der Checkliste bei der Option "Kettenarm"

Wenn Sie nun in einem Projekt eine Multiposition anlegen, werden die Befehle übernommen und ausgeführt. Ausgeblendete Felder werden grau hinterlegt.

Kap_4_2_6_1_Bild_33.jpg
Ansicht der Multiposition

Hinweis: In den Programmeinstellungen in der Rubrik  haben Sie die Möglichkeit durch einen Haken in das Feld "Stücklistenbefehle Set und Visible bei Multipositionen ignorieren" die individuellen Änderungen an den Multipositionen, zentral zu deaktivieren.

Kap_4_2_6_1_Bild_34.jpg